package org.mbcorp.sar.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;

import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table
public class Horario implements Serializable{

	private static final long serialVersionUID = 1L;

	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
	private Integer id;
	
	@NotNull
	@Column(nullable = false)
	private Integer horasTotal;
	
	@NotNull
	@DateTimeFormat(pattern = "dd-MM-yyyy")
	@Column(nullable = false)
	private Date fechaInicio;
	
	@DateTimeFormat(pattern = "dd-MM-yyyy")
	@Column(nullable = false)
	private Date fechaFin;
	
	@Column(nullable = false)
	private boolean flagRestringido;
	
	@Column(nullable = true)
	private String descripcionRestringido;
	
	@Column(nullable = false)
	private boolean flagReservado;
	
	@JoinColumn(name = "operador")
	@ManyToOne(optional = true, fetch = FetchType.EAGER)
	private Operador operador;
	
	@JoinColumn(name = "fase")
	@ManyToOne(optional = true, fetch = FetchType.EAGER)
	private Fase fase;
	
	@Column(nullable = false)
	private boolean flagBaja;
	
	@Column(nullable = false)
	private boolean flagIgnorado;

	@Transient
	private int horaInicio;
	
	@Transient
	private boolean tieneCruce;
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}	
	
	public Integer getHorasTotal() {
		return horasTotal;
	}

	public void setHorasTotal(Integer horasTotal) {
		this.horasTotal = horasTotal;
	}

	public Date getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public Date getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	public boolean isFlagRestringido() {
		return flagRestringido;
	}

	public void setFlagRestringido(boolean flagRestringido) {
		this.flagRestringido = flagRestringido;
	}

	public String getDescripcionRestringido() {
		return descripcionRestringido;
	}

	public void setDescripcionRestringido(String descripcionRestringido) {
		this.descripcionRestringido = descripcionRestringido;
	}

	public boolean isFlagReservado() {
		return flagReservado;
	}

	public void setFlagReservado(boolean flagReservado) {
		this.flagReservado = flagReservado;
	}

	public Operador getOperador() {
		return operador;
	}

	public void setOperador(Operador operador) {
		this.operador = operador;
	}

	public Fase getFase() {
		return fase;
	}

	public void setFase(Fase fase) {
		this.fase = fase;
	}

	public int getHoraInicio() {
		return horaInicio;
	}

	public void setHoraInicio(int horaInicio) {
		this.horaInicio = horaInicio;
	}

	public boolean isFlagBaja() {
		return flagBaja;
	}

	public void setFlagBaja(boolean flagBaja) {
		this.flagBaja = flagBaja;
	}

	public boolean isFlagIgnorado() {
		return flagIgnorado;
	}

	public void setFlagIgnorado(boolean flagIgnorado) {
		this.flagIgnorado = flagIgnorado;
	}

	public boolean isTieneCruce() {
		return tieneCruce;
	}

	public void setTieneCruce(boolean tieneCruce) {
		this.tieneCruce = tieneCruce;
	}
	
}
